package views;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JScrollPane;

import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JMenu;

import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.swing.JMenuItem;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.JPanel;

import model.*;

import java.awt.Font;

public class VerClientes extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTable table;

	public VerClientes() {
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

		// this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

		// GENERAL
		setTitle("Asistente de Viajes - Ver Clientes");
		setSize(new Dimension(911, 605));
		setOpacity(01);

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		JMenu mnArchivo = new JMenu("Archivo");
		menuBar.add(mnArchivo);
		JMenuItem mntmSalir = new JMenuItem("Salir");
		mntmSalir.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				System.out.println("salir");
				System.exit(0);

			}
		});
		mnArchivo.add(mntmSalir);

		JMenu mnAdministracion = new JMenu("Administracion");
		menuBar.add(mnAdministracion);

		// PARTICULAR

		JPanel panel = new JPanel();
		panel.setBounds(32, 50, 447, 439);// tamm
		getContentPane().add(panel);

		table = new JTable();
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		JScrollPane tableSP = new JScrollPane(table);
		panel.add(tableSP);

		tableSP.setBorder(new EmptyBorder(5, 5, 5, 5));

		table.setModel(new DefaultTableModel(new Object[][] {}, new String[] {
				"ID", "Nombre", "UltimoIngreso" }) {
			Class[] columnTypes = new Class[] { String.class, String.class,
					Integer.class };

			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
		});

		table.getTableHeader().setReorderingAllowed(false);// no reordenar
															// columnas
		table.setAutoResizeMode(JTable.WIDTH);// que ocupe todo lo del jpanel

		JLabel lblClientesActuales = new JLabel("Clientes Actuales");
		lblClientesActuales.setFont(new Font("Tahoma", Font.PLAIN, 16));
		lblClientesActuales.setBounds(32, 11, 171, 28);
		getContentPane().add(lblClientesActuales);

		// FECHA DE ALTA PRUEBA
		Date a = new Date();
		a.setYear(2014);
		a.setMonth(4);
		a.setDate(2);

		// ESCRIBIR CLIENTES DE PRUEBA
		ObjectOutputStream saveclient = null;
		try {
			saveclient = new ObjectOutputStream(new BufferedOutputStream(
					new FileOutputStream("clientes.txt")));
			Clientes c1 = new Clientes(1, "Julieta", a);
			Clientes c2 = new Clientes(2, "Ignacio", a);
			Clientes c3 = new Clientes(3, "Jesus", a);

			List<Clientes> qs = Arrays.asList(c1, c2, c3);
			saveclient.writeObject(qs);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} finally {

			try {
				saveclient.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		// LEER CLIENTES
		ObjectInputStream dos = null;
		try {

			dos = new ObjectInputStream(new BufferedInputStream(
					new FileInputStream("clientes.txt")));

			while (true) {

				try {

					List<Clientes> Clientestxt = (List<Clientes>) dos.readObject();
					// display its data
					for (Clientes q : Clientestxt) {

						DefaultTableModel defaultModel = (DefaultTableModel) table
								.getModel();
						Vector row = new Vector();
						row.add(q.getId());
						row.add(q.getNombre());
						row.add(q.getUltimoIngreso().toString());
						defaultModel.addRow(row);
						row = null;
						// table = defaultModel

						System.out.println("Cliente Cargado: " + q.getNombre());

					}

				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}

		} catch (Exception e) {

		} finally {
			System.out.println("Cargando Clientes");
			if (dos != null) {

				try {
					dos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}

		}

		// FECHA
		// System.out.println(a.toString());

		JMenuItem mntmVerListadoClientes = new JMenuItem("Ver Listado Clientes");
		mntmVerListadoClientes.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				VerClientes a = new VerClientes();
				a.setVisible(true);

			}
		});

		mnAdministracion.add(mntmVerListadoClientes);
		
		JMenuItem mntmNuevoCliente = new JMenuItem("Nuevo Cliente");
		mntmNuevoCliente.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				NuevoCliente a = new NuevoCliente();
				a.setVisible(true);

			}
		});
		mnAdministracion.add(mntmNuevoCliente);
		JMenu mnNewMenu = new JMenu("Viajes");
		menuBar.add(mnNewMenu);

		JMenuItem mntmNuevoViaje = new JMenuItem("Nuevo Viaje");
		mntmNuevoViaje.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {

				NuevoViaje a = new NuevoViaje();
				a.setVisible(true);

			}
		});

		mnNewMenu.add(mntmNuevoViaje);
		getContentPane().setLayout(null);
		;

		// IMG
		BufferedImage myPicture;
		try {
			myPicture = ImageIO.read(new File("mini_vuelosfrgp.png"));
			JLabel picLabel = new JLabel(new ImageIcon(myPicture));
			picLabel.setBounds(-10008, -10051, 0, 0);
			getContentPane().add(picLabel).setBounds(540, 02, 350, 182);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}
